Вы не можете, портативно, поместить больше чем один аргумент на a #!
строка. Это означает только полный путь и один аргумент (например. #!/bin/sed -f
или #!/usr/bin/sed -f
), или #!/usr/bin/env
и никакой аргумент интерпретатору.
Обходное решение для получения портативного сценария должно использовать #!/bin/sh
и обертка оболочки, передавая sed сценарий как параметр командной строки. Обратите внимание, что это не санкционировано POSIX (сценарии мультиинструкции должны быть записаны с отдельным -e
аргумент в пользу каждой инструкции для мобильности), но это работает со многими реализациями.
#!/bin/sh
exec sed '
s/a/b/
' "$@"
Для длинного сценария может быть более удобно использовать heredoc. Преимущество heredoc состоит в том, что Вы не должны заключать одинарные кавычки в кавычки внутри, если таковые имеются. Главная оборотная сторона - то, что сценарий питается к sed на его стандартном входе с двумя раздражающими последствиями. Некоторые версии sed требуют -f /dev/stdin
вместо -f -
, который является проблемой для мобильности. Хуже, сценарий не может действовать как фильтр, потому что стандартный вход является сценарием и не может быть данными.
#!/bin/sh
exec sed -f - -- "$@" <<'EOF'
s/a/b/
EOF
Оборотная сторона heredoc может быть исправлена полезным использованием cat
. Так как это помещает целый сценарий на командную строку снова, это не совместимо POSIX, но в основном портативно на практике.
#!/bin/sh
exec sed "$(cat <<'EOF')" -- "$@"
s/a/b/
EOF
Другое обходное решение должно записать сценарий, который может быть проанализирован и sh и sed. Это портативно, довольно эффективно, просто немного ужасно.
#! /bin/sh
b ()
{
x
}
i\
f true; then exec sed -f "$0" "$@"; fi
: ()
# sed script starts here
s/a/b/
Объяснения:
b
; содержание не имеет значения, пока функция синтаксически правильно построена (в частности, у Вас не может быть пустой функции). Затем, если верный (т.е. всегда), выполниться sed
на сценарии.()
маркировка, затем некоторый правильно построенный вход. Затем i
команда, которая не имеет никакого эффекта, потому что она всегда пропускается. Наконец ()
маркировка, сопровождаемая полезной частью сценария.Страница Wikipedia "Нетбук" перечисляет несколько основанные на ARM - и основанные на MIPS нетбуки.
Вы могли бы также посмотреть на смартфоны и КПК, которые запускают Linux; практически все они используют центральные процессоры ARM, и некоторая версия Linux была портирована многим из них.
Смотрите на Всегда Вводящую новшества Сенсорную Книгу. Это - только 400 долларов США, это использует микросхему ARM TI OMAP3, и это может выполнить несколько дистрибутивов Linux (не уверенный в Windows CE). Это также имеет пару изящных функций, как съемный сенсорный экран, который функционирует как планшет и обнаруживающие движение возможности благодаря 3D акселерометру.
Если бы я скучал, и смотрящий на взлом на Руке-коре основывал мини-классное устройство, то я купил бы один из них:
Никакой сенсорный экран все же. Так как Вы также упомянули SIM-карты, я думаю, что телефон большой ячейки или планшет, как интернет-планшет Nokia отвечали бы всем требованиям.
Отделение Samsung Chromebook - 250 долларов США / 300 евро. Примечанием там не является никакой Windows CE, и необходимо будет установить Linux сами.