以下是脚本:
#!/bin/bash
declare pspath=""
declare user=""
declare password=""
declare password=""
for i in "$@"; do
case $i in
--pspath=*)
pspath="${i#*=}"
shift
;;
--user=*)
user="${i#*=}"
shift
;;
--password=*)
password="${i#*=}"
shift
;;
esac
--ip=*)
ip="${i#*=}"
shift
;;
esac
done
command="$pspath -username $user -password $password -ip $ip
$t="sudo pwsh -Command "$command""
echo $t
我正在运行的命令:
./test.sh --pspath=test.ps1 --user=test --password=test$123 --ip=0.0.0.0
输出:
sudo pwsh -Command test.ps1 -username test -password test23 -ip 0.0.0.0
预期输出:
sudo pwsh -Command test.ps1 -username 'test' -password 'test$123' -ip 0.0.0.0
有人能帮我吗?PS:命令无法更改,所以需要在shell脚本本身进行更改。提前感谢
您编写了
./test.sh --pspath=test.ps1 --user=test --password=test$123 --ip=0.0.0.0
你想要
./test.sh --pspath=test.ps1 --user=test --password='test$123' --ip=0.0.0.0
如前所述,您正在传递以下密码:
./test.sh --pspath=test.ps1 --user=test --password=test23 --ip=0.0.0.0
一旦完成,$1
字符将永远丢失并且无法通过test.sh脚本重建。