我通常这样做:
git commit -m "My hands are typing words!"
我开始'厌倦了,所以我做了这批:
@echo off
set var=%*
git commit -m "%var%"
其作用如下:
commit.bat blah blah blah
所以我可以删除-m
和引号,但它会添加.bat
。当我删除文件扩展名时,git Bash尝试将批处理解释为bash。所以我需要使用bash语法。没关系,我试过这个:
#!/usr/bin/bash
git commit -m "$@"
这不起作用,它将参数作为多个参数传递。它调用了这个:
git commit -m My hands are typing words!
我尝试添加更多引号(git commit -m ""$@""
),没有效果。
那么如何将所有参数转换为可以在bash中传递给另一个命令的字符串?
答案 0 :(得分:1)
您可以使用"$*"
代替"$@"
此示例脚本应该解释它:
$ cat a.sh
#!/bin/bash
echo '$*:'
printf "%s\n" $*
echo
echo '"$*":'
printf "%s\n" "$*"
echo
echo '$@:'
printf "%s\n" $@
echo
echo '"$@":'
printf "%s\n" "$@"
$ ./a.sh a b "c d" e
$*:
a
b
c
d
e
"$*":
a b c d e
$@:
a
b
c
d
e
"$@":
a
b
c d
e
但是正确地说,你应该使用" $ 1" &安培;在传递给脚本之前引用您的消息字符串 在上面的例子中,您可以看到c&之间的空格。 d保留,但是" c d" &安培;失去了。