私はシェルスクリプトに初めて触れ、スクリプトを書こうとしています。
- ディレクトリプロンプト
- ディレクトリを通るループ
- ファイルが見つかったら、スクリプトの機能を使用してバックアップします。
- バックアップの作成
すべてのファイルが見つかったら、コピーするためにfile.bakというファイルを作成しました。
#!/bin/bash
function backup()
{
cp"$name" >> file.bak
}
#Main Script
echo -n "Please enter a directory name: "
read name
directory="/home/shawn"
if [ -O "$name" ] || [ -G "$name" ]
then
backup
else
echo "$name has no files."
fi
答え1
まず第一に、これはおそらくあなたの目的に合わないでしょう:
cp"$name" >> file.bak
cp
その後、最初の2文字はで、残りの文字はコマンド呼び出しを試みます
$name
。そのようなコマンドが存在しない可能性があります。
スペースを追加しても問題は解決しません。
cp "$name" >> file.bak
これはcp
、単一の引数(誤った呼び出し方法)を使用してコマンドを呼び出し、コマンドがstdoutに印刷する内容を文字列という名前で追加しますfile.bak
。cp "$name" file.bak
cat "$name" >> file.bak
-O
とを使ったテストも-G
あまり意味がありません。印刷中のエラーメッセージは、実際にはこれらの演算子が確認するものと一致しません。
答え2
次のことを試してみてください。
#!/bin/bash
echo -n "Please enter a directory name: "
read name
find $name -type f -exec cp {} {}.bak \;