日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

linux系統下用.sh文件執行python命令的方法_linux shell

作者:xiyou__ ? 更新時間: 2022-09-20 編程語言

標準版

假設,在終端要執行的命令是:

python main.py

首先在執行目錄下創建test.sh(文件名自定義)文件

并在test.sh文件中寫入:

python main.py

保存。

======================== 經實踐 下面這一步可省 =================================

在終端執行:

chmod a+x test.sh

以上命令使test.sh成為可執行文件。

======================== 經實踐 上面這一步可省 =================================

再在終端執行:

bash test.sh

即可用bash命令執行python main.py。

進階版

在.sh文件中輸入更多內容實現調參過程,具體語法參考shell指令。

1 for循環

將test.sh 文件中的內容改為:

for num in 1 2 3 4 5 6 7 8 9 10
do
    python main.py
done

再在終端執行:

sh test.sh

以上代碼可以實現將python main.py循環執行10次。

假設main.py是可以輸入參數的:

python main.py --epoches 5

以上命令代表可以指定main.py中epoches的大小。

于是,可以通過修改.sh文件的內容實現調參(其中,$表示引用變量的值):

for num in 1 2 3 4 5 6 7 8 9 10
do
    python main.py --epoches $num
done

以上代碼可以使python main.py在epoches在1~10的范圍內都跑一遍。

2 嵌套for循環

同時對epoches和learning_rate進行調整:

for num in 2 3 4 5 6 7 8 9 10
do
    for b in 3e-5 2e-5 1e-5 5e-6 3e-6 2e-6 1e-6
        do
            python main.py --epoches $num --learning_rate $b
        done
done

3 定義變量名

要將運行結果保存到指定文件,文件名由變量名決定,假設原命令:

python main.py --epoches 5 --learning_rate 5e-5 --log log.txt

修改test.sh文件如下:

for num in 2 3 4 5 6 7 8 9 10
do
    for b in 3e-5 2e-5 1e-5 5e-6 3e-6 2e-6 1e-6
        do
            python main.py --epoches $num --learning_rate $b --log ${num}$b.txt
        done
done

此時log文件名有num和b組成,eg.,23e-5.txt

養成好的書寫習慣,變量名用{}引起來。

4 寫if函數

if函數的語法如下:

if [ ${a} == "a" ] && [ ${b} == "b" ]; then
echo "pass"
fi

多層if函數:

if [ ${a} == "a" ] && [ ${b} == "b" ] ; then
echo "pass"
elif [ ${a} == "b" ] && [ ${b} == "a" ] ; then
echo "pass"
else
echo "pass"

以上語法的幾個注意事項:

  • []和內部的語句要用空格分開,不能連在一起
  • 結尾fi和開頭的if是對應的,不能省略
  • echo部分可以換為任何想執行的程序
  • 在一段連續的執行命令之間,不可以都注釋語句,會報錯,例如如下情況

總結

原文鏈接:https://blog.csdn.net/xiyou__/article/details/119925685

欄目分類
最近更新