Linux
如何將標準輸入傳遞給python腳本
我想將來自 shell 命令的輸入傳遞給使用 shell 命令的別名中的 python 腳本。
test.py:
import sys print(sys.argv)
別名
alias foo='echo $(python test.py $1)'
因為
$ python cd_alias_test.py hello
會列印所有的參數:['test.py', 'hello']
我希望這個別名也能做同樣的事情。然而它的標準輸出是['test.py'] hello
這意味著輸入字元串被傳遞給標準輸入,而不是腳本的參數。
我如何達到預期的效果?
alias test='echo $(python test.py $1)'
$1
沒有在別名中定義,別名不是 shell 函式;它們只是文本替換;所以你test hello
的擴展為echo $(python test.py ) hello
,擴展為echo ['test.py'] hello
.如果你想要一個shell函式,寫一個!(並且不要呼叫您的 function 或 alias
test
,該名稱已為您的外殼中的邏輯評估事物保留)。function foo() { echo $(python test.py $1) } foo hello
但人們真的很想知道:為什麼不簡單地製作
test.py
執行檔(例如chmod 755 test.py
)並#!/usr/bin/env python3
在其中包含第一行?然後你可以直接執行它:./test.py hello darkness my old friend