根据条件修改 bash 命令的函数
function to modify bash command based on condition
函数的当前状态如下:
function git() {
if [[ $@ =~ ^"d untrack-all" ]]
then
echo "g d rm --cached -r ~"
elif [[ $@ =~ ^"d add-and-commit" ]]
then
echo "g d add ~ && g d commit -am \"$_\""
elif [[ $@ =~ ^"d sb" ]]
then
echo "git d branch | rofi -dmenu | xargs git checkout"
elif [[ $@ =~ ^"d stash-and-reset" ]]
then
echo "git d stash && git d reset --hard HEAD"
elif [[ $@ =~ ^"d last" ]]
then
echo "git d --no-pager log -1 --oneline"
else
echo [=11=]" "$@
fi
}
我期待的是,
如果我 运行 命令 git d untrack-all
它实际上会 运行 g d rm --cached -r ~
如果我 运行 命令 git d add-and-commit
它实际上会 运行 g d add ~ && g d commit -am \"$_\"
...
如果模式不匹配,它将 运行 按原样执行命令。比如我运行git status
,就会运行git status
.
在给定的代码中如果我用 eval
替换 echo
,它会关闭终端。我该怎么办?
你不需要使用 echo 所以:
echo "g d rm --cached -r ~"
应该是:
g d rm --cached -r ~
等在最后一种情况下,您可以 运行
bash -c [=12=]" "$@
函数的当前状态如下:
function git() {
if [[ $@ =~ ^"d untrack-all" ]]
then
echo "g d rm --cached -r ~"
elif [[ $@ =~ ^"d add-and-commit" ]]
then
echo "g d add ~ && g d commit -am \"$_\""
elif [[ $@ =~ ^"d sb" ]]
then
echo "git d branch | rofi -dmenu | xargs git checkout"
elif [[ $@ =~ ^"d stash-and-reset" ]]
then
echo "git d stash && git d reset --hard HEAD"
elif [[ $@ =~ ^"d last" ]]
then
echo "git d --no-pager log -1 --oneline"
else
echo [=11=]" "$@
fi
}
我期待的是,
如果我 运行 命令 git d untrack-all
它实际上会 运行 g d rm --cached -r ~
如果我 运行 命令 git d add-and-commit
它实际上会 运行 g d add ~ && g d commit -am \"$_\"
...
如果模式不匹配,它将 运行 按原样执行命令。比如我运行git status
,就会运行git status
.
在给定的代码中如果我用 eval
替换 echo
,它会关闭终端。我该怎么办?
你不需要使用 echo 所以:
echo "g d rm --cached -r ~"
应该是:
g d rm --cached -r ~
等在最后一种情况下,您可以 运行
bash -c [=12=]" "$@