[英]How do I translate this bash function to fish shell?
function run () {
nohup python $1 > nohup.out &
}
在命令行上,我將其稱為“run scriptname.py”,bash執行以下命令:
python scriptname.py > nohup.out &
你能幫我翻譯成魚嗎?
到目前為止我有這個..
function run
bash -c "nohup python $1 > nohup.out &"
end
當我在〜/ .config / fish / config.fish上調用source時
這只是說
Error when reading file: ~/.config/fish/config.fish
沒有提供任何有用的提示,指出錯誤是什么。
這里真的沒有必要執行bash
,fish也可以執行nohup
,重定向也可以。
這里有一個小的區別,而不是$ 1和$ 2等等,fish函數的參數存儲在$ argv數組中。
function run
nohup python $argv > nohup.out &
end
這會將$ argv擴展為每個元素的所有元素,因此run script.py banana
會運行nohup python script.py banana > nohup.out &
。 如果你真的想要傳遞一個參數,你需要$argv[1]
。
我實際上不知道為什么你的定義在導出config.fish時會導致錯誤 - 您使用的是哪個魚版本?
這是魚類功能的完全有效(並且更正確)的替代品:
function run
bash -c 'nohup python "$@" > nohup.out &' _ $argv
end
這相當於native-bash函數:
run() {
nohup python "$@" </dev/null >nohup.out 2>&1 &
}
...個人而言,我建議改寫使用disown
而不是nohup
。
關於從fish
看到的錯誤,我建議關注可能影響你的文件是否可讀的任何其他(不是語法相關的) - 權限等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.