ワイルドカード (*) を含むファイルを bash スクリプトのフォルダーにコピーする - なぜ機能しないのですか? 質問する

ワイルドカード (*) を含むファイルを bash スクリプトのフォルダーにコピーする - なぜ機能しないのですか? 質問する

フォルダーを作成し、そのフォルダーにファイルをコピーする 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/"

また、ベストプラクティス/慣例として、環境変数や組み込み変数との名前の競合を避けるために、環境変数以外の変数名は小文字にする必要があります。

おすすめ記事