ls
私の変数にコマンドを割り当てましたが、my_File
実行すると$my_File
機能しません。理由を説明できますか?
#!/bin/bash
my_File='ls -f | grep -v '\/''
$my_File
ベストアンサー1
作成した行は、値がstringの変数を定義しますls -f | grep -v /
。引用符なしで使用すると、単語リスト(スペースで区切られた文字列):、、、、、、、に展開ls
されます。この文字は、シェルが文字列を解析する代わりに分割するため、特別ではないため、コマンドの2番目の引数になります。-f
|
grep
-v
/
|
ls
これらの文字列にはコマンドを入力できません。コマンドの短い名前を定義するには、エイリアス(コマンドが完了した場合)または関数(コマンドにパラメータがあり、一部のデフォルトパラメータを単一のコマンドに渡さない場合)を使用します。あなたの場合は、エイリアスが適しています。
alias my_File='ls -f | grep -v /'
my_File