対話型プロンプトでシェルスクリプトを実行する際には、いくつかの問題があります。完全なコードがうまく動作します。 bashスクリプトをecho 'hello world'行に置き換えると、問題なくうまく機能します。私は長い間シェルユーザーエクスペリエンスがないので、説明と答えてくれてありがとう。
したがって、基本的に私が望むのは、データバックアップを開始するために別のスクリプトを実行するかどうかを尋ねるインタラクティブシェルスクリプトを使用することです。
bashコマンドを使用して基本スクリプト(bash my_script.sh)を実行しようとすると、次のエラーが発生します。
main_backup_pend.sh: line 17: bash: command not found
17行目は、下に見えるbashスクリプトを呼び出すところです。
[Yy]* ) echo 'Copying database...'; bash $PATH/backup.database.sh > backup.log.$DATE.database; break;;
#!/bin/bash
PATH=/data/sjamal/4.Backups
DATE=170317
#[COPY]Mysqldump, making database copy storing it locally
while true; do
read -p "Do you wish make a database copy?" yn
case $yn in
[Yy]* ) echo 'Copying database...'; bash $PATH/backup.database.sh > backup.log.$DATE.database; break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
#[BACKUP]Performing back up of Repository to HPC
while true; do
read -p "Do you wish to back up Repository to HPC?" yn
case $yn in
[Yy]* ) echo 'backing up Repository...'; bash $PATH/backup.Repository.sh > backup.log.$DATE.repository; break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
ベストアンサー1
スクリプトの最初の行はすべてを破ります。
PATH=/data/sjamal/4.Backups
これは、スクリプト内のすべてのコマンド(bash
インタプリタ自体を含む)がこのディレクトリにのみあることを示します。 (これがPATH
予約された変数であることを知らなかったかもしれません。echo $PATH
時々、一般的な検索コマンドのディレクトリのリストを見てください。)
PATH
スクリプト全体で使用を別のものに変更すると、期待どおりにbackup_dir
機能する可能性が高くなります。
"$double_quotes"
追加のヒント:変数を使用するときに変数(および使用されるパス)を置きます。したがってbackup.log.$DATE.repository
。"backup.log.$DATE.repository"