首頁 > 軟體

linux系統下用.sh檔案執行python命令的方法

2022-07-27 22:04:07

標準版

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

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部分可以換為任何想執行的程式
  • 在一段連續的執行命令之間,不可以都註釋語句,會報錯,例如如下情況

總結

到此這篇關於linux系統下用.sh檔案執行python命令的文章就介紹到這了,更多相關linux .sh檔案執行python內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com