Tag: shell

shell脚本中的exception处理?

我正在寻找shell脚本中的exception处理机制。 有没有尝试,在shell脚本中捕获等价的机制?

我怎么知道我是否在屏幕上?

在linux中使用屏幕时,如何判断我是否在屏幕上? 我可以exit ,如果我在一个屏幕,我会退出一个屏幕,但如果我不在,那么我最终会closures我的terminal。 在进行screen -r ,我可以看到是否还有其他屏幕,但是如何知道当前的terminal是否是其中一个屏幕?

在Unix命令行上简洁和可移植的“连接”

我怎样才能将多行代码连接成一行,分隔符是换行符,避免尾随分隔符,还可以忽略空行? 例。 考虑一个包含三行的文本文件foo.txt : foo bar baz 期望的输出是: foo,bar,baz 我现在使用的命令是: tr '\n' ',' <foo.txt |sed 's/,$//g' 理想情况下,这将是这样的: cat foo.txt |join , 什么是: 最便携,简洁,可读的方式。 使用非标准的unix工具最简洁的方式。 当然我可以写一些东西,或者只是使用别名。 但我很想知道这些选项。

使用shell脚本从文本文件中获取特定的行

我正在尝试从文本文件中获取特定的行。 到目前为止,网上我只看到像sed的东西,(我只能使用sh -not bash或sed或类似的东西)。 我只需要使用基本的shell脚本来做到这一点。 cat file | while read line do #do something done 我知道如何遍历线,如上所示,但如果我只是需要获取特定线的内容

在Vim插入模式下,是否有添加文件path自动完成的方法?

我写了很多shell脚本,并且不断地input文件path。 我想知道是否有人知道在插入模式下让Vim自动完成文件path的方法,就像当你在你最喜欢的shell中你select完成目录或文件的path一样。 如果可以将shell的CTRL Dfunction转换为Vim插入模式(即查看当前path中的文件/目录),可以获得额外的功劳。

循环散列,或使用PowerShell中的数组?

我正在使用这个(简化的)代码块从SQL Server中用bcp提取一组表。 $OutputDirectory = "c:\junk\" $ServerOption = "-SServerName" $TargetDatabase = "Content.dbo." $ExtractTables = @( "Page" , "ChecklistItemCategory" , "ChecklistItem" ) for ($i=0; $i -le $ExtractTables.Length – 1; $i++) { $InputFullTableName = "$TargetDatabase$($ExtractTables[$i])" $OutputFullFileName = "$OutputDirectory$($ExtractTables[$i])" bcp $InputFullTableName out $OutputFullFileName -T -c $ServerOption } 它工作的很好,但现在有些表需要通过视图提取,有些则不需要。 所以我需要一个像这样的数据结构: "Page" "vExtractPage" , "ChecklistItemCategory" "ChecklistItemCategory" , "ChecklistItem" "vExtractChecklistItem" 我正在看哈希,但我没有find任何关于如何通过哈希循环。 在这里做什么是正确的事情? […]

当我们把一个命令放在美元符号和括号内时,在shell中是什么意思:$(command)

我只是想了解shell中的以下代码行。 它用于获取当前的工作目录。 我知道$(variable)名称返回variables名称内的值,但$(command)应该返回什么? 它执行命令后是否返回值? 在这种情况下,我们可以使用`来执行命令。 CWD="$(cd "$(dirname $0)"; pwd)" 在不同版本的shell中,也可以从以下代码行获取相同的输出 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 我无法理解$(cd..和$(dirname的含义。 有谁能帮我弄清楚这个命令是如何执行的?

Bash:运行一个接一个的命令,即使我暂停第一个(Ctrl-z)

我知道在bash中我可以运行一个接一个的命令,用分号分隔它们 $ command1; command2 或者,如果我只想command2只有在command1成功运行,使用&& : $ command1 && command2 这是有效的,但是如果我使用Ctrl-z暂停command1 ,在第一种情况下,立即运行command2 ,在第二种情况下,它根本不运行。 我怎样才能顺序运行命令,但仍然能够暂停第一个命令,但没有第二次运行,直到我已经重新启动它(与fg ),它完成? 我希望尽可能简单的input内容,因为我希望以交互方式进行此操作。 或者,也许我只需要在某个地方设置一个选项。 顺便说一下, Ctrl-z是什么?

当一个调用只返回一个对象时,如何强制Powershell返回一个数组?

我正在使用Powershell在Web服务器上设置IIS绑定,并遇到以下代码的问题: $serverIps = gwmi Win32_NetworkAdapterConfiguration | Where { $_.IPAddress } | Select -Expand IPAddress | Where { $_ -like '*.*.*.*' } | Sort if ($serverIps.length -le 1) { Write-Host "You need at least 2 IP addresses for this to work!" exit } $primaryIp = $serverIps[0] $secondaryIp = $serverIps[1] 如果服务器上有两个IP地址,那么很好 – Powershell会返回一个数组,我可以查询数组的长度并提取第一个和第二个地址。 问题是 – 如果只有一个IP,Powershell不会返回一个元素数组,它会返回IP地址(如string,如“192.168.0.100”) – […]

在远程的ssh命令中传递variables

我希望能够使用ssh从我的机器运行命令,并通过环境variables$ BUILD_NUMBER 这就是我想要的: ssh pvt@192.168.1.133 '~/tools/myScript.pl $BUILD_NUMBER' 在进行ssh调用的机器上设置$ BUILD_NUMBER,由于该variables在远程主机上不存在,因此不会被拾取。 如何传递$ BUILD_NUMBER的值?