我有一個簡單的腳本,它從命令列獲取第一個引數并列印hello, first_arg.
但是當我通過時|ls,它正在列印當前目錄中的檔案。
我的腳本檔案
#! /bin/bash
echo "Hello, $1."
我嘗試了多種方法
echo "Hello, '$'"echo "Hello," "$1"printf "Hello %s" "$1"
我想要輸出像 Hello, |ls
我檢查了參考和這個答案https://unix.stackexchange.com/questions/171346/security-implications-of-forgetting-to-quote-a-variable-in-bash-posix-shells
編輯
但它不會發生在像這樣的輸入上
echo "input: "
read name
echo "Hello, $name." # output Hello, |ls
echo "Hello, " $name # output Hello, |ls
uj5u.com熱心網友回復:
呼叫腳本時需要參考管道。否則,shell 將安排您的腳本的標準輸出作為標準輸入發送ls,您最終會得到輸出,就好像您自己手動運行一樣ls。其中任何一個都可以:
./simple.sh \|ls
./simple.sh '|ls'
./simple.sh "|ls"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/351559.html
標籤:猛击
