bashで書かれたすべてのファイルをインポートしたいので、このコマンドはうまくいきIFBASH=$(grep -Fx #!/bin/bash *)
ます。
出力:test.sh:#!/bin/bash t test2.sh:#!/bin/bash
これらの内容はすべて$IFBASH変数に保存されます。今削除したいので:#!/bin/bash
使用しました。LIST=$(echo "$IFBASH" | tr -d ':#!/bin/bash')
出力:
tet.h
tet2.h
これは確かに私が望むものではありません。誰かが私に実際に動作するコマンドを与えることができますか?
答え1
失敗した理由tr
はキャラクター一覧文字列ではなく入力として。に変わるので印刷echo abc | tr 'bca' 'def'
します。に変更 。に変更 。fde
b
f
c
d
a
e
grep
不要な部分を含めないように指示するか(Linuxでそのオプションをサポートしている場合)、次のように文字列を置き換えることができるツールを使用して必要なgrep
操作を実行できます。-l
sed
GNUの使用
grep
ifbash=$(grep -lx '#!/bin/bash' *)
文字列を置き換えることができる他のツールを使用してください
sed
。perl
ifbash=$(grep -x '#!/bin/bash' * | sed 's|#!/bin/bash||')
または
ifbash=$(grep -x '#!/bin/bash' * | perl -pe 's|#!/bin/bash||')
ここでは対応するオプションは不要なので、削除してに-F
変更しました。通常、グローバル環境変数は通常すべて大文字であるため、シェルスクリプトで大文字変数名を使用しないことをお勧めします。幅が広いため、予期しない動作が発生する可能性があります。IFBASH
ifbash