在 Ubuntu 中,如何在 bash for 循环中创建别名?
In Ubuntu, how do I make an alias inside a bash for loop?
我有一个脚本可以帮助我测试并发性。我使用屏幕一次 运行 一堆东西。但除此之外,我无法弄清楚如何使用 for $i 变量创建别名(或函数?)。
#!/bin/bash
# alias p='. ./p.sh'
# Run a bunch of apps in separate screens.
export NUM_MUS=3
for (( i = 1; i <= $NUM_MUS; ++i ))
do
echo $i
cd ~/mutest/mu$i
screen -mS mu$i -h 10000 ./app
# How do I make an alias to let me easily access each screen?
# None of these work.
#
# alias mu$i='screen -dr mu$i'
# eval
# function mu$i () { screen -dr mu$i }
# ^AD to get out
done
# Have a way of killing them all.
function mustop ()
{
for (( i = 1; i <= $NUM_MUS; ++i ))
do
screen -r mu$i -X quit
done
screen -ls
}
请注意,我不是在询问有关获取参数的问题。我不想要参数...除非有办法让它与参数一起工作?
...
好的,我可以添加这一行,它会起作用"good enough"
function mu { screen -dr mu }
但它仍然没有回答我使用 for 循环变量制作 buncha 的问题 aliases/functions。我并不是说这是最聪明的做事方式,但如果我确实想要这样做,我会怎么做?
变量在双引号内扩展,而不是在单引号内。
alias mu$i="screen -dr mu$i"
此外,请确保您 运行 使用 source scriptname
的脚本,这样别名将在您的原始 shell 中定义,而不仅仅是 shell 执行脚本.
我有一个脚本可以帮助我测试并发性。我使用屏幕一次 运行 一堆东西。但除此之外,我无法弄清楚如何使用 for $i 变量创建别名(或函数?)。
#!/bin/bash
# alias p='. ./p.sh'
# Run a bunch of apps in separate screens.
export NUM_MUS=3
for (( i = 1; i <= $NUM_MUS; ++i ))
do
echo $i
cd ~/mutest/mu$i
screen -mS mu$i -h 10000 ./app
# How do I make an alias to let me easily access each screen?
# None of these work.
#
# alias mu$i='screen -dr mu$i'
# eval
# function mu$i () { screen -dr mu$i }
# ^AD to get out
done
# Have a way of killing them all.
function mustop ()
{
for (( i = 1; i <= $NUM_MUS; ++i ))
do
screen -r mu$i -X quit
done
screen -ls
}
请注意,我不是在询问有关获取参数的问题。我不想要参数...除非有办法让它与参数一起工作?
...
好的,我可以添加这一行,它会起作用"good enough"
function mu { screen -dr mu }
但它仍然没有回答我使用 for 循环变量制作 buncha 的问题 aliases/functions。我并不是说这是最聪明的做事方式,但如果我确实想要这样做,我会怎么做?
变量在双引号内扩展,而不是在单引号内。
alias mu$i="screen -dr mu$i"
此外,请确保您 运行 使用 source scriptname
的脚本,这样别名将在您的原始 shell 中定义,而不仅仅是 shell 执行脚本.