如何修復以下print_error功能:
#!/bin/bash
script_name="tmp.bash"
function print_error {
format="$1"
shift
printf "%s: ERROR: %s\n" "$script_name" "$format" "$@"
}
print_error "Today is %s; tomorrow is %s" "$(date)" "$(date -d " 1 day")"
以便它輸出:
tmp.bash: ERROR: Today is Mon Nov 22 15:10:40 PST 2021; tomorrow is Tue Nov 23 15:10:50 PST 2021
目前,它輸出:
tmp.bash: ERROR: Today is %s; tomorrow is %s
Mon Nov 22 15:10:40 PST 2021: ERROR: Tue Nov 23 15:10:50 PST 2021
print_error 應該能夠接受可變數量的引數。
uj5u.com熱心網友回復:
使用中間變數(此處substr)構建功能訊息(日期訊息)和技術訊息(錯誤訊息)的第二個構建:
#! /bin/bash
declare -r script_name="tmp.bash"
function print_error {
local substr=
printf -v substr "$1" "${@:2}"
printf "%s: ERROR: %s\n" "$script_name" "$substr"
}
print_error "Today is %s; tomorrow is %s" "$(date)" "$(date -d " 1 day")"
然后,您可以將功能構建和技術構建分開:
#! /bin/bash
declare -r script_name="tmp.bash"
function print_tech_error () {
printf "%s: ERROR: %s\n" "$script_name" "$1"
}
function print_fct_error {
local substr=
printf -v substr "$1" "${@:2}"
print_tech_error "${substr}"
}
print_fct_error "Today is %s; tomorrow is %s" "$(date)" "$(date -d " 1 day")"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363383.html
