在Ubuntu中,如何在bash for循环中创建别名?

时间:2015-09-28 20:22:02

标签: bash variables ubuntu for-loop alias

我有一个脚本来帮助我测试并发性。我用屏幕一次运行一堆东西。但在所有这些中,我无法弄清楚如何使用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
   }

请注意,我不是在询问参数。我不想要参数......除非有办法让它与参数配合使用?

...

好的,我可以添加这一行,它可以正常工作&#34;足够好&#34;

function mu { screen -dr mu$1 }

但它仍然没有回答我使用for循环变量来制作buncha别名/函数的问题。我并不是说这是最聪明的做事方式,但如果我 希望这样做,我该怎么办?

1 个答案:

答案 0 :(得分:2)

变量在双引号内扩展,而不是在单引号内。

alias mu$i="screen -dr mu$i"

另外,请确保使用source scriptname运行脚本,因此别名将在原始shell中定义,而不仅仅是执行脚本的shell。