在我看来,如果没有该行,文件运行相同.
echo我的脚本中有问题:
echo -n "Some string..."
Run Code Online (Sandbox Code Playgroud)
版画
-n Some string...
Run Code Online (Sandbox Code Playgroud)
并移动到下一行.在控制台中,它正确地工作而没有换行:
Some string...
Run Code Online (Sandbox Code Playgroud) 我在很多地方看到过,包括对这个网站的推荐(什么是首选的Bash shebang?),#!/usr/bin/env bash优先使用#!/bin/bash.我还看过一个进取的个人建议使用#!/bin/bash是错误的和bash的功能会这样做会丢失.
总而言之,我在严格控制的测试环境中使用bash,其中每个循环驱动器基本上都是单个主驱动器的克隆.我理解可移植性论点,虽然它不一定适用于我的情况.是否有任何其他理由更喜欢#!/usr/bin/env bash替代品,并且假设可移植性是一个问题,是否有任何理由使用它可能会破坏功能?
我需要一个可直接执行的python脚本,所以我用它启动了该文件#!/usr/bin/env python.但是,我也需要无缓冲输出,所以我试过#!/usr/bin/env python -u,但是失败了python -u: no such file or directory.
我发现#/usr/bin/python -u的作品,但我需要它来获得python在PATH支持虚拟env环境.
我有什么选择?
我编写了一个在bash(v 4)中使用关联数组的脚本.
它在我正在使用的本地机器上工作正常4.1.5(1)-release.
在生产计算机上,使用4.1.0(1)-release以下行声明assoc数组失败:
declare -A uniqjars
Run Code Online (Sandbox Code Playgroud)
随着消息:
/script.sh: line 11: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
Run Code Online (Sandbox Code Playgroud)
我觉得这是一个普通的bash 4功能?
在生产机器上bash的人讨论使用,-A所以我认为它应该工作.
使用关联数组创建 .
declare -A name
我可以通过打印出值来确认脚本是否正在使用正确版本的bash echo 'bash -version.
我能做错什么?
我有一个执行此操作的 bash 脚本:
nmap -sn 192.168.0.1-255 | grep -Eo 192.168.0.{1,3\}[0-9] > new.txt
date >> network_log
echo ---------------------------- >> network_log
cat new.txt >> network_log
Run Code Online (Sandbox Code Playgroud)
扫描网络,并将结果附加到带有时间戳的文件 network_log。手动运行后,network_log 文件如下所示:
Tue 13 Sep 2016 11:22:23 EDT
----------------------------
192.168.0.1
192.168.0.2
192.168.0.45
Run Code Online (Sandbox Code Playgroud)
而 cronjobs 在我的 network_log 文件中产生以下输出:
Tue Sep 13 17:46:00 EDT 2016
----------------------------
Run Code Online (Sandbox Code Playgroud)
没有ip结果。注意:cronjob 是从 root 用户运行的,因此它具有扫描整个网络所需的所有提升。