Bashが引数を含むDOSコマンドを受け入れるようにし、基本コマンドをBashコマンドに変換し、引数がある場合は引き続き使用する必要があります。
私が失った部分は*) Command Not Found!に閉じ込めずに個々のケースに引数を渡す方法です。
たとえば、ユーザー入力は次のようになります。
copy file1.txt file2.txt
ユースケース:copy
その後、Linuxコマンドを実行しcp
てコピーを渡した2つの引数で完了する必要があります。
#!/bin/bash
while :
do
read INPUT_STRING
case $INPUT_STRING in
chdir|CHDIR)
cd $arg1
bash myscript.sh
;;
cls|CLS)
clear
bash myscript.sh
;;
copy|COPY)
cp $arg1 $arg2
bash myscript.sh
;;
createdir|CREATEDIR)
mkdir $arg1
bash myscript.sh
;;
delete|DELETE)
rm $arg1
bash myscript.sh
;;
dir|DIR)
ls
bash myscript.sh
;;
move|MOVE)
mv $arg1 $arg2
bash myscript.sh
;;
print|PRINT)
echo $arg1
bash myscript.sh
;;
quit|QUIT)
break
PS1="n01396736@cisvm-cop4640-2:~$ "
;;
rename|RENAME)
mv $arg1 $arg2
bash myscript.sh
;;
type|TYPE)
cat $arg1
bash myscript.sh
;;
*)
echo "Command Not Found!!"
bash myscript.sh
;;
esac
break
done
ベストアンサー1
正しい方向を教えてくれたRomiyaとMichael Prokopekに感謝します。これは私が終了し、期待どおりに動作します。バグを発見したり、コードを改善できる場合はお知らせください。これは私が作った最初のLinuxスクリプトです。
#!/bin/bash
counter=1
while : [$counter -lt 2]
do
read -p 'Your Name Here > ' cmd "arg"
case $cmd in
chdir|CHDIR)
cd $arg
;;
cls|CLS)
clear
;;
copy|COPY)
cp $arg
;;
createdir|CREATEDIR)
mkdir $arg
;;
createfile|CREATEFILE)
touch $arg
;;
delete|DELETE)
rm $arg
;;
dir|DIR)
ls
;;
move|MOVE)
mv $arg
;;
print|PRINT)
echo $arg
;;
quit|QUIT)
counter=2
;;
rename|RENAME)
mv $arg
;;
type|TYPE)
cat $arg
;;
*)
echo "Command Not Found!!"
;;
esac
done