Bash
如何從getopts輸出bash腳本中的管道標準輸出?
我有以下片段:
#!/bin/bash OPTIND=1 while getopts ":m:t" params; do case "${params}" in m) bar=$OPTARG ;; t) foo=$OPTARG ;; \?) "Invalid option: -$OPTARG" >&2 print_usage exit 2 ;; :) echo "Option -$OPTARG requires an argument." >&2 print_usage exit 2 ;; esac done shift "$(( OPTIND-1 ))" echo "${foo}" && echo "${bar}"
如何通過此腳本使用管道輸出標準輸出?
例如:
echo "this is the test" | bash getoptscript.sh -m -
它應該提供 :
this is the test
作為輸出。
通過管道輸出到 xargs,將其輸入轉換為參數:
echo "this is the test" | xargs bash getoptscript.sh -m -
這將導致:
bash getoptscript.sh -m - this is the test
cat
您可以簡單地使用來讀取腳本的標準輸入,而不是將字元串作為命令行參數:printf '%s\n' "$foo" if [ "$bar" = "-" ]; then # assume data is on standard input cat else print '%s\n' "$bar" fi