したがって、いくつかの簡単なコマンドを変数に入れてから、行の先頭でその変数を呼び出すと、実際にそのコマンドが使用されます。たとえば、
yes@no:~$ nnn="ls -l Super"
yes@no:~$ $nnn
-rw-rw-rw- 1 yes yes 6 May 29 19:46 Super
case
ただし、特殊文字を含むアイテムを使用しようとしたり、同じアイテムを使用しようとするとif
機能しません。
yes@no:~$ nnn="ls -l|grep Super"
yes@no:~$ $nnn
ls: invalid option -- '\'
Try 'ls --help' for more information.
または:
yes@no:~$ duper="if [[ ${ar} -eq 2 ]]; then echo yes; else echo no; fi"
yes@no:~$ "$duper"
if [[ -eq 2 ]]; then echo yes; else echo no; fi: command not found
明らかに、ここに私が理解していないより深いものがあります。
答え1
引用符の改行は特殊文字をエスケープしてリテラルとして扱います。あなたが探している行動を引き起こすためには、あなたがしなければならないことがあります。
eval "$nnn"
eval "$duper"