Плохо. В предыдущем файле Kbuild был SPI _SUNXI _NDMA, и я заменил SUNXI на SUN7I, в то время как я должен писать SUN7I _SPI _NDMA, а не SPI _SUN7I _NDMA.
readonly scr="MYENV=1 sh /tmp/scr.sh"
eval ${scr} -a 1 -b 2
Здесь, наверное, лучше использовать функцию:
scr() {
MYENV=1 sh /tmp/scr.sh "$@"
}
scr -a 1 -b 2
Это по-прежнему не помогает запустить его через lockf
, если только вы не сделаете что-то вроде экспорта функции (в Bash ), а затем lockf
запустите оболочку, чтобы функция была доступна..
Вы можете избежать неудобного слова присваивания, используя env
для установки переменной. Это внешняя программа, поэтому она доступна и для lockf
. С тем, как вы сохраняете команду ранее:
readonly scr="env MYENV=1 sh /tmp/scr.sh"
$scr -a 1 -b 2
# or
lockf -k /tmp/f.lock $scr -a 1 -b 2
Но обратите внимание, что это не лучший способ сохранить команду, он не сработает в тот момент, когда вам нужно сохранить, например. имя файла с пробелами там. Лучше использовать массив (в Bash/ksh/zsh ):
.scr=(env MYENV=1 sh /tmp/scr.sh)
"${scr[@]}" -a 1 -b 2
# or
lockf -k /tmp/f.lock "${scr[@]}" -a 1 -b 2