[英]bash function conflict with alias
如何在bash腳本文件中定義相同名稱函數之前檢測別名(此文件將在另一個腳本中獲取)?
像bash中的元編程一樣(如果這個名稱已被別名占用,則定義另一個名稱函數?)
$ source t.sh
$ alert 'test'
test
$ type alert
alert is a function
alert ()
{
echo -n "$@"
}
$ alias alert='notify-send --urgency=low -i error'
$ source t.sh
bash: t.sh: line 1: syntax error near unexpected token `('
bash: t.sh: line 1: `alert() { echo "$@"; }'
$ type alert
alert is aliased to `notify-send --urgency=low -i error'
$ cat t.sh
alert() { echo "$@"; }
你不需要。 默認情況下,別名不會在非交互式shell中展開。
if alias alert 2> /dev/null; then
echo "'alert' already an alias"
else
source t.sh
fi
如果alias
命令的單個參數不是別名,則該命令以非零狀態存在。
好吧,如果name
是別名,那么which <name>
返回0。
因此,要檢查是否已使用custom_name
您可以執行以下操作:
if [ $(which custom_name >/dev/null; echo $?) -eq 0 ]
then
echo "Already aliased"
return 1
else
echo "Free to use"
return 0
fi
注意:這不會檢查當前shell中是否存在名為custom_name
的bash函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.