我在 Jenkins FreeStyle Job Type 中有一個選擇引數。
變數 ${IP} 的選項:
192.168.1.33-prod
192.168.1.34-qa
192.168.1.35-stage
在可執行 Shell 腳本中,我想在將值分配給命令之前洗掉所選選項引數中“-”之后的值。
執行的命令:
rsync --owner=ec2-user --group=ec2-user -O --no-p -arzh --exclude ".git/" --perms --chmod=a rwx /tmp/some-value/ ec2-user@${IP}:/some-folder/
Linux 命令是:
echo ${IP} | cut -f1 -d"-"
結果應該是 結果:
192.168.1.33
執行前的最終命令應如下所示:
但是,當我嘗試以下方法時,該值變為空:
rsync --owner=ec2-user --group=ec2-user -O --no-p -arzh --exclude ".git/" --perms --chmod=a rwx $WORKSPACE/ [email protected]:/some-folder/
uj5u.com熱心網友回復:
該問題可能與您重新分配IP變數值的步驟有關- 您的問題中缺少該步驟。
但是,在您的情況下,使用 shell 引數擴展而不是cut. 使用%%,您可以在替換時洗掉最長的匹配模式,所以這應該可以解決問題:
rsync [...] ec2-user@${IP%%-*}:/some-folder/
有關詳細資訊,請參閱bourne shell 手冊頁。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403195.html
標籤:
上一篇:處理bash腳本中的特殊字符
