Shell 命令打开其他 shell 和 运行 命令
Shell command to open other shells and run commands
我正在尝试编写一个进程来打开另外两个 shell windows 并将命令发送给它们 运行 我已经安装的一些节点模块。这是我第一次编写 bash 脚本,所以如果我搞砸了,请随时告诉我。
我有这个脚本
#!/bin/bash
# [-g]
# [-h]
# [-l <location to start the http-server on --default ./>]
# [-p <port to start the http-server on --default "8111">]
run_gulp=false
run_http=false
run_http_port=8111
run_http_location=./
while getopts ghl:p: opt; do
case $opt in
g)
run_gulp=true
;;
h)
run_http=true
;;
l)
run_http_location=$OPTARG
;;
p)
run_http_port=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
if [ $run_gulp == true ]
then
start mintty "gulp" # this works
fi
if [ $run_http == true ]
then
start mintty "http-server $run_http_location -p $run_http_port"
fi
我把它放在一个名为 startdev 的文件中,该文件位于我的 PATH 变量上的一个文件夹中(我在 Windows 10),所以我可以从任何地方打开一个 shell 并输入在 startdev -g
或 startdev -g -h
到 运行 这个。
一切正常,我想补充一点,当它打开 shell 并发送 gulp 命令时,它会检测到我的 gulp 文件并能够 运行 就像我想要的那样,它的默认任务。然而,http 服务器并没有做同样的事情,它只是告诉我 http-server ./ -p 8111: No such file or directory
.
Mintty 将第一个参数视为命令名称,您传递的所有选项都是因为 qoutes。由其他程序启动的程序参数(即使用 sudo、screen 等)通常作为单独的参数传递以避免解析,因此您应该尝试 start mintty http-server $run_http_location -p $run_http_port
,不带引号。
我正在尝试编写一个进程来打开另外两个 shell windows 并将命令发送给它们 运行 我已经安装的一些节点模块。这是我第一次编写 bash 脚本,所以如果我搞砸了,请随时告诉我。
我有这个脚本
#!/bin/bash
# [-g]
# [-h]
# [-l <location to start the http-server on --default ./>]
# [-p <port to start the http-server on --default "8111">]
run_gulp=false
run_http=false
run_http_port=8111
run_http_location=./
while getopts ghl:p: opt; do
case $opt in
g)
run_gulp=true
;;
h)
run_http=true
;;
l)
run_http_location=$OPTARG
;;
p)
run_http_port=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
if [ $run_gulp == true ]
then
start mintty "gulp" # this works
fi
if [ $run_http == true ]
then
start mintty "http-server $run_http_location -p $run_http_port"
fi
我把它放在一个名为 startdev 的文件中,该文件位于我的 PATH 变量上的一个文件夹中(我在 Windows 10),所以我可以从任何地方打开一个 shell 并输入在 startdev -g
或 startdev -g -h
到 运行 这个。
一切正常,我想补充一点,当它打开 shell 并发送 gulp 命令时,它会检测到我的 gulp 文件并能够 运行 就像我想要的那样,它的默认任务。然而,http 服务器并没有做同样的事情,它只是告诉我 http-server ./ -p 8111: No such file or directory
.
Mintty 将第一个参数视为命令名称,您传递的所有选项都是因为 qoutes。由其他程序启动的程序参数(即使用 sudo、screen 等)通常作为单独的参数传递以避免解析,因此您应该尝试 start mintty http-server $run_http_location -p $run_http_port
,不带引号。