я получаю следующее сообщение об ошибке:Подстановка команды в качестве переменной в однострочника
> echo "${$(qstat -a | grep kig):0:7}"
-bash: ${$(qstat -a | grep kig):0:7}: bad substitution
Я пытаюсь взять номер перед .
из
> qstat -a | grep kig
1192530.perceus- kigumen lr_regul pbs.sh 27198 2 16 -- 24:00:00 R 00:32:23
и использовать его в качестве аргумента qdel
в openPBS, чтобы я мог удалить все процессы, которые я начал с моего входа kigumen
так идеально, это должно работать:
qdel ${$(qstat -a | grep kig):0:7}
до сих пор, только это работает:
str=$(qstat -a | grep kig); qdel "${str:0:7}"
, но я хочу чистый Однострочник без временной переменной.
есть способ замаскировать подстановку команды в качестве переменной? –
Не забудьте сначала сохранить переменную. Подстановки оболочки не являются гнездовыми, как истинные строковые выражения, поэтому вы в основном получаете только одну «операцию» для каждой подстановки. например вы можете выполнить подстановку команд или подстроку переменной ИЛИ переменную с удаленным шаблоном или переменную с удаленным шаблоном суффикса ... но только один из них за раз. –