フォルダーを作成し、そのフォルダーにファイルをコピーする bash スクリプトを書いています。コマンド ラインからは動作しますが、スクリプトからは動作しません。何が問題なのでしょうか?
#! /bin/sh
DIR_NAME=files
ROOT=..
FOOD_DIR=food
FRUITS_DIR=fruits
rm -rf $DIR_NAME
mkdir $DIR_NAME
chmod 755 $DIR_NAME
cp $ROOT/$FOOD_DIR/"*" $DIR_NAME/
次のような結果になります:
cp: cannot stat `../food/fruits/*': No such file or directory
ベストアンサー1
それは全く逆です。を除外する文字*
は二重引用符で囲む必要があります。
#!/bin/sh
dir_name=files
root=..
food_dir=food
fruits_dir=fruits
rm -rf "$dir_name"
mkdir "$dir_name"
chmod 755 "$dir_name"
cp "$root/$food_dir/"* "$dir_name/"
また、ベストプラクティス/慣例として、環境変数や組み込み変数との名前の競合を避けるために、環境変数以外の変数名は小文字にする必要があります。