批量处理相当于Bash的回车键
使用Bash时,我可以将一个命令的输出输出到另一个命令中: my_command `echo Test` 与 是同一件事 my_command Test (显然,这只是一个非执行的例子.) 我只是想知道您是否可以在批处理中做同样的事情. 解决方案 您可以通过将输出重定向到文件来做到这一点.例如: echo zz > bla.txt set /p VV=
6 2024-03-29
编程技术问答社区
什么时候使用Bash shell扩大反斜线中的变量?
如果我有一个变量,它在外壳还是在子壳中扩展了吗?例如: FOO=BAR BAZ=`[[ $FOO == BAR ]] && echo 1 || echo 0` $FOO扩展时是否定义?例如,子壳会看到以下内容: [[ $FOO == BAR ]] && echo 1 || echo 0 或以下: [[ BAR == BAR ]] && echo 1 || echo 0 解决方案 (您应该真正使用$(...)而不是backticks.但是原理是相同的.) 要在子壳中执行的命令由命令替换表格中的字面字符组成,除了特质,有时甚至在背部内部的后斜线周围造成混淆的规则.因此,可变扩展发生在子壳内部. 例如, x=$(foo=bar && echo $foo) 将定义x=bar,但不会导致foo在外壳中定义的(重新).
8 2024-03-28
编程技术问答社区
Bash:反斜线中的转义字符
我试图在我的bash命令中逃脱背部的字符,主要是为了处理文件名中的空格,这会导致我的命令失败. 我到目前为止的命令是: grep -Li badword `grep -lr goodword *` 此命令应导致一个不包含" badword"但确实包含"好字"的文件列表. 解决方案 即使您正确地逃脱了,当goodword> grep输出的文件数量达到命令行长上的限制时,即使您得到了逃脱.最好将第一个grep的输出输送到第二个grep上,就像这样 grep -lr -- goodword * | xargs grep -Li -- badword 这将正确处理带有空格的文件,但是如果文件名中有一个newline,则会失败.至少gnu grep和xargs支持将文件名与nul字节分开,例如此 grep -lrZ -- goodword * | xargs -0 grep -Li -- badword 编辑:在某些文件名以-开头的情况下,添加了双dashe
8 2024-03-28
编程技术问答社区
为什么在用于保存命令输出时,背号会导致EOF错误?
我正在循环浏览clearcase文件的列表,以查看文本" Merge 我尝试在此clearcase文件列表上运行一段时间循环,然后如果它符合我所需的条件,则将其附加到另一个文件.以下是我使用的确切逻辑: 16 FILTER_LIST=cut -f1 -d'@' branchmerge_versions.txt 17 touch temp.txt 18 echo $FILTER_LIST > temp.txt 19 20 while read t; do 21 isMerged=`cleartool describe t | grep -e "Merge > filesToMerge.txt 24 fi 25 done
8 2024-03-28
编程技术问答社区
在命令行调用中,对于Git命令,backtick-`是做什么的?
我不是一个"命令行"的人.我一直是我的整个职业生涯的前端开发人员,与命令行几乎没有互动,而是尽可能多地利用应用程序GUI,因此这可能是许多人的基本问题. 尝试与git合作时遇到了一个小问题.我包括-m消息标志,并尝试了类似于"示例添加函数"的消息,其中" add" add"被`backtick符号包围)(无法在此处显示它,因为这样做会显示单词为代码知道如何在此编辑器中逃脱它). 我有错误:-bash: add: command not found 过去,我已经使用了Backtict来包围功能名称,而Git毫无问题.我认为这里有某种保留的关键字,其中包括GIT,或者只是Linux中的命令行,但我想知道什么是特定情况,因此我可以理解如何避免它. 谢谢. 解决方案 bash采用了背景的内容,并以此为命令运行另一个bash过程. 另一种(首选)的方式是$( ... ). 要包含回头,请为字符串使用单引号,而不是"而是". 其他解决方案 另外,此语法替
10 2024-03-28
编程技术问答社区
在Bash脚本中,反斜线和$()的区别是什么?
我在bash脚本中看到了两种不同的形式,它们似乎也做得相同: `some command` 和 $(some command) 两者有什么区别,我什么时候应该使用它们? 解决方案 没有任何语义差异. Backtick语法是较旧且功能较低的版本.请参阅 man bash ,"命令替代"部分. 如果您的外壳支持$()语法,则更喜欢它,因为它可以嵌套.
18 2024-03-28
编程技术问答社区
为什么要呼应一个回字行?
i在一个项目中"继承"了一些代码,在一个bash脚本中,它们在回路上使用echo,例如: #!/bin/bash echo `/path/command argument` 那有什么区别,只是运行命令本身? #!/bin/bash /path/command argument 都将命令的输出发送到脚本的stdout. 那么有什么区别?为什么使用echo? 将其与>结合起来似乎更糟: #!/bin/bash echo `/path/command argument > /var/log/exemple.log` 解决方案 它在当前形式中看起来并不特别有用,而是使用echo与(未引用的)背部使用的副作用是丢失了单词之间的空间.这是因为单词拆分 - 命令输出中的每个单词都被视为echo的单独参数,该参数仅由单个空间隔开.例如: $ echo "a b c" a b c $ echo `echo "a b c"` a b c 请注
4 2024-03-28
编程技术问答社区
在回车键中使用管道
我试图用管道运行命令,但会收到错误: echo abc | `echo "grep a | grep b"` grep: |: No such file or directory grep: grep: No such file or directory grep: b: No such file or directory 代码怎么了? 预期结果将执行以下命令: echo abc | grep a | grep b 的结果 abc 解决方案 尚不清楚您要做什么,但这是您正在做的事情: echo "grep a | grep b" 输出字符串grep a | grep b. 这是从背景的输出.您正在使用壳想要命令的位置的背景,因此" grep'a''|' 'grep''b'"试图用作命令行,所有令牌都在字面上解释了(我添加了单个引号以使其更清晰,希望如此),因此壳忽略了echo的输入,而是试图寻找的输入命名文件中的正则表达式a.您显然没有名
8 2024-03-28
编程技术问答社区
在msys bash上包含换行符时,PS1命令替换失败
此命令成功 $ PS1='$(date +%s) $ ' 1391380852 $ 但是,如果我添加了一个newline,它将失败 $ PS1='$(date +%s)\n$ ' bash: command substitution: line 1: syntax error near unexpected token `)' bash: command substitution: line 1: `date +%s)' 如果我使用的是可行的 $ PS1='`date +%s`\n$ ' 1391381008 $ 但不建议使用.那么是什么导致此错误? GNU bash, version 4.2.45(6)-release 解决方案 您可以轻松地消除解析,以防止击中任何此类错误(尽管我自己不能重现它): PS1='$(date +%s)'$'\n$ ' 此$'\n'语法解析为字面的新线字符,而'\n'对包含两字符\n逃脱序列的字符串解析.
6 2024-03-27
编程技术问答社区
为什么我的带后缀的if语句不能正常工作?
我正在尝试制作一个bash脚本,用户将能够复制文件,并查看是否成功完成了文件.但是,每次副本都正确完成,是否显示第二个输出"未完成".知道如何解决这个问题? if [ `cp -i $files $destination` ];then echo "Copy successful." else echo "Copy was not done" fi 解决方案 您想要的是 if cp -i "$file" "$destination"; then #... 不要忘记报价. 您的版本: if [ `cp -i $files $destination` ];then #.. 将始终执行else分支. 如果壳中的语句采用命令. 如果该命令成功(返回0,将分配给$?),则条件成功. 如果您做if [ ... ]; then,那就与 if test ... ; then因为[ ]是 test test command
12 2024-03-27
编程技术问答社区
究竟反斜线在反斜线中是如何工作的?
来自 bash FAQ : BackSlashes(\)内部背部以不明显的方式处理: $ echo "`echo \\a`" "$(echo \\a)" a \a $ echo "`echo \\\\a`" "$(echo \\\\a)" \a \\a 但是,FAQ不会分解导致这种差异的解析规则.我发现man bash的唯一相关报价是: 使用旧式的反向引用形式的替代形式时,后斜线保留其字面含义,除非在$,'或. 后面 "$(echo \\a)"和"$(echo \\\\a)"情况很容易:反斜线,逃生角色正在逃脱出来的反向反弹.因此,在输出中,\\的每个实例都变为\.但是我正在努力理解背景案例的类似逻辑.什么是基本规则?观察到的输出如何从中遵循? 最后,一个相关的问题...如果您不引用Backticks,则会获得"无匹配"错误: $ echo `echo \\\\a` -bash: no match: \a 在这种情况下发生了什么?
18 2024-03-27
编程技术问答社区
在shell脚本中使用$()而不是反符号有什么好处?
有两种方法可以在bash中捕获命令行的输出: 传统bourne shell backticks ``: var=`command` $()语法(据我所知,它是特定于狂欢的,或者至少不受像原始bourne这样的非固醇旧壳的支持) var=$(command) 与Backticks相比,使用第二种语法有任何好处吗?还是两个完全100%等效的? 解决方案 主要的是 nest ,命令中的命令的能力,而不会失去您的理智,试图弄清楚某种形式的逃脱是否会在Backticks上起作用. 一个例子,尽管有些人为: deps=$(find /dir -name $(ls -1tr 201112[0-9][0-9]*.txt | tail -1l) -print) 它将为您提供/dir目录树中所有文件的列表,该文件的名称与2011年12月的最早日期文件相同(a). . 另一个示例就像获取父目录的名称(不是完整路径): pax> cd /home/pa
16 2024-03-27
编程技术问答社区
R编码的ASCII回车键
我在列表的名称上有以下背景.先前的列表没有此背景. $`1KG_1_14106394` [1] "PRDM2" $`1KG_20_16729654` [1] "OTOR" 我发现这是" ASCII坟墓"的口音,并在编码类型上阅读R页面.但是该怎么办?我不清楚这是否会影响某些功能(例如匹配列表名称),还是可以按照? 保留它 编码帮助页面:谢谢! 解决方案 我的理解(我可能是错误的)是,回避只是逃脱列表名称的一种手段,如果静止不动,否则将无法使用.使用Backticks参考列表名称的一个示例是包含空格的名称的情况: lst
16 2024-03-07
编程技术问答社区
从csh脚本中改变工作目录
我想查找运行过程的一些数据,实际上我正在寻找相应的工作ID的刮擦目录.我设法通过以下命令手动执行此操作(假设Job-ID为12345): find ~ -name '12345.out' 这是根据作业找到输出文件: /home/username/somefolder/12345.out 刮擦目录写入该文件夹中名为.scrdir的文件,所以 cd | cat /home/username/somefolder/.scrdir 带我到我想要的地方. 我现在想将其结合到我的 .cshrc 中.... 到目前为止我的Atempt: #/bin/csh set jobfile = `find ~ -name $argv[1].out` set jobdir = `dirname $jobfile` set scrdir = `cat $jobdir/.scrdir` echo $scrdir 第一个参数值是工作ID,例如12345,例如此脚本打印正
28 2024-03-03
编程技术问答社区
为什么Kotlin的数据类对象有反记号?
这是我使用Kotlin数据类创建器插件创建的数据类. data class ResponseHealthInisghts( val `data`: List, val message: String, val statusCode: Int ) 即使我删除了背部,我想知道这是否适用于Java互操作性.但是,这个变量不是关键字,而是具有反击.为什么? 基于为什么这种kotlin方法包含backticks? 这个问题is是Java和Kotlin的关键字,但数据不是. 解决方案 基于此问题的答案封闭了背景吗? 以及@forpas和@marstran的评论,我能够理解我的问题. is关键字是硬关键字 硬关键字 总是被解释为关键字,不能用作标识符: 因此,我们需要使用互操作性,因为Java和Kotlin都具有is关键字. 其中data关键字仅在Kotlin中可用,也属于类别 软关键字 在适用的上下文中充当关键字,可以在其他上下文中用作标识
20 2024-02-04
编程技术问答社区
在CodeIgniter 2.0.3的Active Record中出现奇怪的回文行为
以前,我的所有查询在CI 2.0版中运行良好,但是当我升级到 2.0.3 时,我的一些精选查询被打破了. ci正在自动添加 backticks(`````````````'' CI用户手册已指示在 中添加第二个参数 db->选择 AS false ,但仍然不起作用. 代码如下: class Company_model extends MY_Model { ---------------- $this->db->select(' count('.$fieldname. ') as num_stations'); $this->db->select(" CONCAT_WS(',', clb_company.address1, clb_company.address2, clb_company.city, clb_company.state, clb_company.zipcode ) as companyAddress"); $this->d
12 2024-01-10
编程技术问答社区
在使用反斜线时逃避空白
我已经四处搜索,从我的角度来看,使用Backticks是我解决此问题的唯一方法.我正在尝试在目录中的每个文件中调用perl的mdls命令,以查找其最后访问的时间.我遇到的问题是,在我从find中的文件名中,我有没有示例的空间,显然不喜欢.是否有一种简单的方法可以逃避文件名中的所有空白,然后再将其传递给mdls.如果这是一个明显的问题,请原谅我.我是Perl的新手. my $top_dir = '/Volumes/hydrogen/FLAC'; sub wanted { # Learn about sub routines if ($File::Find::name) { my $curr_file_path = $File::Find::name. "\n"; `mdls $curr_file_path`; print $_; } } find(\&wanted, $top_dir); 解决方案 如果
10 2023-12-03
编程技术问答社区
shell脚本不能将命令行的输出保存到变量中
我正在尝试执行shell命令,然后使用shell脚本将输出保存到变量中.因此,我使用这样的背景: out=`ls -l` print $out 该代码工作正常,我可以将其用于任何其他Shell命令,但是当我尝试执行" Python - Version"以检查Python版本时.我有奇怪的问题. Backtict与" Python"命令不适用于与任何其他命令的正常工作时,它将输出打印到屏幕上,并将其保存为变量$ out.因此,如果我这样做: out =`python --version` print "my python version is "$out 结果: Python 2.6.1 my python version is 我也试图使用$()代替背部,但没有运气.有什么想法吗? 解决方案 您在等于标志之前有一个空间: out =`python --version` 应该是: out=`python --version` 更新
16 2023-11-13
编程技术问答社区
如何在反斜线内正确使用perl变量名?
我需要在bash shell上执行以下代码: mogrify -resize 800x600 *JPG 由于宽度和高度是变量,所以我尝试了: `mogrify -resize $widx$hit *JPG` 但是,在编译中,我得到了Global symbol "$widx" requires explicit package name at getattach.pl line 131.的错误,这是因为编译器将$ widx视为新的未宣布变量. 我尝试在背景中插入双引号,但是执行代码没有任何消息. 在壳执行中插入变量名称的正确方法是什么?他们可以连接吗? 解决方案 要将变量插入任何插值字符串(无论是qq//>>>或qx或qr//),只需执行"this is $foo!"就足够了:变量名(此处:$foo)是界定的由不能成为普通变量名称的一部分的!. 当字符串的一部分可以成为Perl的命名规则的一部分时,这并不容易.示例: my $genes =
14 2023-11-13
编程技术问答社区
如何模拟Perl内置的反斜线运算符?
我想单位测试使用Backticks的Perl程序.有没有办法嘲笑背部,以便他们做一些与执行外部命令不同的事情? 另一个问题显示了我需要的,但是在Ruby中.不幸的是,我不能选择将Ruby用于此项目,也不想避免回避. 解决方案 您可以*模拟内置的 功能. Perl遇到Backticks或qx表达式时会调用您的模拟功能. BEGIN { *CORE::GLOBAL::readpipe = \&mock_readpipe }; sub mock_readpipe { wantarray ? ("foo\n") : "foo\n"; } print readpipe("ls -R"); print `ls -R`; print qx(ls -R); $ perl mock-readpipe.pl foo foo foo * - 如果您有 Perl版本5.8.9 或更高版本. 其他解决方案 而不是使用backticks,可以从# applicatio
20 2023-11-07
编程技术问答社区