【发布时间】:2015-10-22 15:47:31
【问题描述】:
我正在尝试编写一个脚本,通过将我要打开的项目(目录)的名称作为参数来设置我的编程环境
例如:./my_script.sh sample_app
这是目前为止的脚本:
#!/bin/bash
wmctrl -s 0
sublime &
sleep 2
wmctrl -s 1
google-chrome &
sleep 2
wmctrl -s 2
Dir="$echo /home/biTNumb/Projects/ruby/workspace/$1"
echo $Dir
gnome-terminal --window-with-profile=Guard -e ls &
#gnome-terminal -e cd /home/biTNumb/Projects/ruby/workspace/$1 && bundle exec guard &
#gnome-terminal -e cd /home/biTNumb/Projects/ruby/workspace/$1 && rails s &
脚本执行时出现问题:
gnome-terminal --window-with-profile=Guard -e ls &
我收到消息The child process exited normally with status 0.:
之后我无法使用终端(我只能关闭它)并且消息隐藏了部分输出。然而,我已经创建了一个配置文件并将 When command exits 下拉菜单设置为 'Hold the terminal open'...
** 我将 cmets 留在了脚本中,以便您了解我正在尝试做什么
【问题讨论】:
-
与主要问题无关,但这个
Dir="$echo /home/biTNumb/Projects/ruby/workspace/$1"一点也不正确,虽然不会伤害你,因为$echo变量没有价值。如果是这样,那么$Dir的设置将不正确。从该作业中删除$echo。使用时还要引用"$Dir"。 -
你希望
ls的执行做什么?显示ls的输出并留下一个死窗?您在Guard配置文件中设置了该设置? -
@EtanReisner 我观察到,如果不使用“echo”,我就不能使用带有名称的特殊字符“*”作为快捷方式
-
那个字符串中的
$echo没有做nothing。echo命令导致 shell 在未引用的$Dir变量中展开一个 glob。但这很糟糕(总的来说)。试试printf '[%s]\n' "$Dir"和$echo看看我的意思(比较printf '[%s]\n' $Dir看看不引用的作用)。 -
@EtanReisner 我需要脚本来打开一个新的终端,在其中运行 ls 然后保持打开状态并准备好使用!!我明白你所说的“$echo”是什么意思
标签: linux bash shell gnome-terminal