【问题标题】:how to include variable value in command argument in the shell script?如何在 shell 脚本的命令参数中包含变量值?
【发布时间】:2022-01-20 17:38:10
【问题描述】:

certmgmt.sh-

中的这个脚本语句
 update_keystore(){   
     keystore_file_path="/data/cert/keystore.jks"
     kestore_password="pass@word"
     temp_cert_path="/data/cert/temp_cert_file.cer"
     cert_alias="root";

     command="keytool -importcert -file $temp_cert_path -keystore $keystore_file_path -alias $cert_alias  -keypass $kestore_password -storepass $kestore_password -noprompt"
     $("$command")
 }

这是函数执行的输出

pz-active-user# /usr/certmgmt.sh update_keystore
usr/certmgmt.sh: line 1381: keytool -importcert -file /data/cert/temp_cert_file.cer -keystore /data/cert/keystore.jks -alias root  -keypass pass@word -storepass pass@word -noprompt: No such file or directory

但如果我直接从终端运行它,它就可以工作。

pz-active-user# keytool -importcert -file /data/cert/temp_cert_file.cer -keystore /data/cert/keystore.jks -alias root  -keypass pass@word -storepass pass@word -noprompt

【问题讨论】:

标签: shell


【解决方案1】:

摆脱command 变量和$(...) 命令替换。你可以像在命令行一样直接调用keytool

update_keystore() {   
     keystore_file_path="/data/cert/keystore.jks"
     keystore_password="pass@word"
     temp_cert_path="/data/cert/temp_cert_file.cer"
     cert_alias="root"

     keytool -importcert -file "$temp_cert_path" -keystore "$keystore_file_path" -alias "$cert_alias" -keypass "$keystore_password" -storepass "$keystore_password" -noprompt
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 2016-05-05
    • 2015-01-21
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2011-08-02
    相关资源
    最近更新 更多