我有一个以下格式的字符串:
string1:string2:string3:string4:string5
我正在尝试使用sed分割字符串:并在新行上打印每个子字符串.这是我正在做的事情:
cat ~/Desktop/myfile.txt | sed s/:/\\n/
这打印:
string1
string2:string3:string4:string5
Run Code Online (Sandbox Code Playgroud)
如何在每个分隔符上拆分它?
在PowerShell中我有一个字符串对象数组,我有一个包含字符串对象的对象.在Java中,您可以执行a .equals(aObject)来测试字符串值是否匹配,而==如果两个对象引用内存中的相同位置则执行测试.
如何.equals(aObject)在powershell中运行等效项?
我这样做:
$arrayOfStrings[0].Title -matches $myObject.item(0).Title
Run Code Online (Sandbox Code Playgroud)
这两个都具有完全相同的字符串值,但我得到返回值false.有什么建议?
我正在尝试建立SSH连接并查看是否存在目录,如果该目录存在,我想在进行SSH调用的本地计算机上运行命令.
这是我尝试过的:
if [ ssh -t username@ssh_server -d /directory ]
then
{
commands....
}
fi
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
我在使用TortoiseSvn的Windows 7工作站上尝试使用以下语法检出repo时遇到问题:
svn co svn+ssh://user@ip/repo .
Run Code Online (Sandbox Code Playgroud)
我为测试这个问题做了些什么:
当我尝试从Windows 7工作站上的命令行执行上述语法时,我收到错误:
svn: E720087: Unable to connect to a repository at URL 'svn+ssh:///user@ip/repo'
svn: E720087: Can't create tunnel:The parameter is incorrect.
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我使用乌龟gui浏览回购,我可以成功打开并检查回购.但我需要从命令行执行此操作以进行脚本编写.
有什么建议?
我在这上面阅读了bash手册页,但我不明白其中的区别.我测试了它们两个,它们似乎产生完全相同的结果.
如果未通过命令行参数设置值,我想设置变量的默认值.
#!/bin/bash
var="$1"
var=${var:-word}
echo "$var"
Run Code Online (Sandbox Code Playgroud)
上面的代码回显,word如果$1为null,$1则回显if not null的值.这样做:
#!/bin/bash
var="$1"
var=${var:=word}
echo "$var"
Run Code Online (Sandbox Code Playgroud)
根据Bash手册页,
${parameter:-word}使用默认值.如果参数未设置或为null,则替换单词的扩展.否则,参数的值将被替换.
${parameter:=word}分配默认值.如果参数未设置或为null,则将字的扩展分配给参数.然后替换参数的值.不能以这种方式分配位置参数和特殊参数.
他们是一样的,${parameter:=word}只是做得更多吗?
我无法弄清楚为什么下面的代码不起作用:
Function createFirefoxTask() {
$schedule = new-object -com Schedule.Service
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
foreach ($task in ($tasks | select Name)) {
echo "TASK: $task.name"
if($task.equals("FirefoxMaint")) {
write-output "$task already exists"
break
}
}
}
createFirefoxTask
Run Code Online (Sandbox Code Playgroud)
我得到的输出是这样的:
FirefoxMaint
TASK: @{Name=FirefoxMaint}.name
TASK: @{Name=Task1}.name
TASK: @{Name=Task2}.name
TASK: @{Name=Task3}.name
TASK: @{Name=Task4}.name
TASK: @{Name=Task5}.name
Run Code Online (Sandbox Code Playgroud)
如果我$task.name在不通过脚本的情况下从shell 回显,它会正确显示名称.
任何想法这个代码有什么问题?
CLIENT_BUILD_DIR="~/Desktop/TempDir/"
if [ ! -d $CLIENT_BUILD_DIR ]
then
{
mkdir $CLIENT_BUILD_DIR
}
fi
Run Code Online (Sandbox Code Playgroud)
我收到错误:mkdir:〜/ Desktop:没有这样的文件或目录.
显然目录就在那里,如果我用〜/ Desktop/TempDir /替换变量,脚本就可以工作了
我正在阅读重定向数据/dev/null,所以我尝试了一个简单的测试:
ping a.b.c # which results in an address not found
Run Code Online (Sandbox Code Playgroud)
如果我试试这个:
ping a.b.c > /dev/null # prints the same error message as the one above
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做:
ping a.b.c > /dev/null 2>&1 # The error message is gone
Run Code Online (Sandbox Code Playgroud)
最后的解决方案是理想的解决方案,但是发生了2>&1什么?到目前为止,我的研究表明,2代表stderr和1代表stdout.因此,如果我以这种方式阅读,看起来我正在创建一个stderr文件并重定向stdout到它?
如果是这种情况,&该命令的作用是什么?
我收到以下错误,该错误在我的代码的最后一行标记(为空):
syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样说.我只是想尝试使用here-docssh连接:
#!/bin/sh
connectToServer() {
ssh -t root@$1 <<- ENDSSH
echo "Connected to server!"
ENDSSH
}
connectToServer $1
Run Code Online (Sandbox Code Playgroud)
这段代码出了什么问题?
编辑
感谢那些帮助我解决这个问题的人.我的剧本有一些问题; 我在线上使用空格:
echo "Connected to server"
Run Code Online (Sandbox Code Playgroud)
而不是制表符.在关闭之前我还包括空间,ENDSSH这导致了EOF.这些变化是我的问题的一部分,但解决它的最后一件事是删除我关闭后出现的额外空格字符ENDSSH.
我有一个Windows软件包列表,我使用以下命令通过powershell安装:
& mypatch.exe /passive /norestart
mypatch.exe正在从列表中传递,它不会等待先前的安装完成 - 它只是继续.它构建了一个巨大的安装窗口,正在等待安装.此外,我无法$LASTEXITCODE确定安装是成功还是失败.
反正有没有让安装在开始下一个之前等待?
bash ×6
linux ×4
shell ×4
powershell ×3
ssh ×2
windows ×2
command-line ×1
foreach ×1
sed ×1
string-split ×1
svn ×1
tortoisesvn ×1
unix ×1
variables ×1
wait ×1