假設您有一個帶有很多選項的函式,并且您決定動態存盤它們的值:
#!/bin/bash
fun() {
local __option
while getopts ":$(printf '%s:' {a..z} {A..Z})" __option
do
case $__option in
[[:alpha:]])
# ...
local "__$__option=$OPTARG"
esac
done
# here you might get a conflict with external variables:
[[ ${__a: 1} ]] && echo "option a is set"
[[ ${__b: 1} ]] && echo "option b is set"
# etc...
[[ ${__Z: 1} ]] && echo "option Z is set"
}
有沒有辦法檢查變數是否在本地定義?
uj5u.com熱心網友回復:
您絕對可以檢測到一個變數是本地的(如果它已使用 Bash 的declare, local,typeset陳述句之一宣告)。
這是一個插圖:
#!/usr/bin/env bash
a=3
b=2
fn() {
declare a=1
b=7
if local -p a >/dev/null 2>&1; then
printf 'a is local with value %s\n' "$a"
else
printf 'a is not local with value %s\n' "$a"
fi
if local -p b >/dev/null 2>&1; then
printf 'b is local with value %s\n' "$b"
else
printf 'b is not local with value %s\n' "$b"
fi
}
fn
輸出是:
a is local with value 1
b is not local with value 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450372.html
標籤:重击
