かつてディレクトリ内のすべてのFILE.cファイルをFILE.outにコンパイルするシェルスクリプトがありました。
私はそれを失い、それを再作成しようとしており、次のようになりました。非常に似ていることを知っていますが、どこで間違っているのかわかりません。
#!/usr/bin/env bash
for i in 'ls *.c'
do
gcc -g3 -o3 $i -o {$i%.}.out
done
ベストアンサー1
このコマンドを実行する必要はありませんls *.c
。 Bashは自動的にワイルドカードパターンを拡張します。したがって、本当に絶望的でMakefileを作成したくない場合は、次のようにすることができます。
#!/usr/bin/env bash
for i in *.c
do
echo "gcc -g3 -o3 $i -o ${i%.c}.out"
# gcc -g3 -o3 "$i" -o "${i%.c}.out"
done
はい
次のサンプルデータがあるとします。
$ ls -1
a.c
b.c
c.bash
c.c
d.c
e.c
私のスクリプトを実行してくださいc.bash
。
$ ./c.bash
gcc -g3 -o3 a.c -o a.out
gcc -g3 -o3 b.c -o b.out
gcc -g3 -o3 c.c -o c.out
gcc -g3 -o3 d.c -o d.out
gcc -g3 -o3 e.c -o e.out
スクリプトを実行するには、echo
上記の行をコメントアウトしてから、このgcc
行のコメントを削除する必要があります。