确定 bash 中的变量是否为空(“”)的最佳方法是什么?
我听说建议我这样做 if [ "x$variable" = "x" ]
这是正确的方法吗?(一定有更直接的东西)
我只是想知道两者之间到底有什么区别
[[ $STRING != foo ]]
Run Code Online (Sandbox Code Playgroud)
和
[ $STRING != foo ]
Run Code Online (Sandbox Code Playgroud)
除此之外,后者是符合 POSIX 的,可在 sh 中找到,而前者是在 bash 中找到的扩展。
我有一个计划任务,它启动一个robocopy每小时运行一次的批处理脚本。每次它运行时,桌面上都会弹出一个带有 robocopy 输出的窗口,我真的不想看到。
我设法通过运行预定的作业来使窗口最小化
cmd /c start /min mybat.bat
Run Code Online (Sandbox Code Playgroud)
但这每小时给我一个新的命令窗口。鉴于cmd /c“执行字符串指定的命令然后终止” ,我对此感到惊讶- 我一定误解了文档。
有没有办法在不弹出 cmd 窗口的情况下运行批处理脚本?
scripting windows command-line-interface scheduled-task windows-command-prompt
尝试在 bash shell 下执行以下命令 echo "Reboot your instance!"
在我的安装中:
root@domU-12-31-39-04-11-83:/usr/local/bin# bash --version
GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@domU-12-31-39-04-11-83:/usr/local/bin# uname -a
Linux domU-12-31-39-04-11-83 2.6.35-22-virtual #35-Ubuntu SMP Sat Oct 16 23:57:40 UTC 2010 i686 GNU/Linux
root@domU-12-31-39-04-11-83:/usr/local/bin# echo "Reboot your instance!"
-bash: !": event not …Run Code Online (Sandbox Code Playgroud) 例如,我有一个简单的 bash 文件
#!/bin/bash
cd ~/hello
ls
Run Code Online (Sandbox Code Playgroud)
如何让它在执行之前显示每个命令?Windows 批处理脚本中“@echo off”的效果正好相反。
Puppet 和 Chef 工具的新功能。似乎他们正在做的工作可以用 shell 脚本来完成。也许它是在 shell 脚本中完成的,直到这些出现。
我同意它们更具可读性。但是,除了可读性之外,是否还有其他优于 shell 脚本的优点?
我有一个只能以我的用户名 (myuser) 登录的系统,但我需要以其他用户 (scriptuser) 身份运行命令。到目前为止,我想出了以下来运行我需要的命令:
ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\""
Run Code Online (Sandbox Code Playgroud)
但是,如果当我尝试运行更复杂的命令时,例如[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"我很快就会遇到引用问题。我不确定如何将这个示例复杂命令传递给bash -c,当\"已经分隔了我传递的命令的边界时(所以我不知道如何引用 /tmp/Some 目录,其中包含一个空格。
无论引用多么复杂/疯狂,是否有通用解决方案允许我传递任何命令,或者这是我达到的某种限制?是否有其他可能的,也许更具可读性的解决方案?
正是标题所说的。我没有太多运气找到合适的文档来查看 -xe 在以下用例中的作用:
#!/bin/bash -xe
这些参数有什么作用以及记录在哪里?
从我的脚本输出中,我想捕获所有带有错误消息的日志数据,并将它们全部重定向到日志文件。
我有如下脚本:
#!/bin/bash
(
echo " `date` : part 1 - start "
ssh -f admin@server.com 'bash /www/htdocs/server.com/scripts/part1.sh logout exit'
echo " `date` : sleep 120"
sleep 120
echo " `date` : part 2 - start"
ssh admin@server.com 'bash /www/htdocs/server.com/scripts/part2.sh logout exit'
echo " `date` : part 3 - start"
ssh admin@server.com 'bash /www/htdocs/server.com/scripts/part3.sh logout exit'
echo " `date` : END"
) | tee -a /home/scripts/cron/logs
Run Code Online (Sandbox Code Playgroud)
我想查看文件中的所有操作 /home/scripts/cron/logs
但是我只看到了我在echo命令后放置的内容。
如何检查SSH命令成功的日志?
我需要收集所有日志。我需要它来监视脚本中每个命令的结果,以便更好地分析脚本失败时发生的情况。
是的,我可以启动虚拟机或远程设备并尝试输入密码……我知道……但是有没有一种工具或脚本可以模拟登录,足以确认或否认密码正确?
设想:
服务器服务帐户的密码被“忘记”...但我们认为我们知道它是什么。我想将凭据传递给某些东西,并让它以“正确的密码”或“不正确的密码”反击。
我什至想过一个驱动器映射脚本,其中传递了该用户帐户和密码,以查看它是否成功映射了驱动器,但在使其正常工作的逻辑中迷失了......类似于:
-Script 通过 msgbox 请求用户名 -script 通过 msgbox 请求密码 -script 尝试将驱动器映射到每个人都可以访问的公共共享 -script 如果成功则取消映射驱动器 -script 返回弹出 msgbox 说明“正确密码”或“不正确”密码”
任何帮助表示赞赏......你会认为这将是一种罕见的情况,不需要工具来支持它但是......好吧......