我正在尝试重定向脚本的输出,并且需要在脚本内部调用它。
filename=uname -a
filename="$filename" date
2>&1 | tee $filename".txt"
Run Code Online (Sandbox Code Playgroud)
这就是我到目前为止所得到的,但这显然是错误的。我不太了解 SH 脚本,所以感谢帮助
-亚历克斯
我有多个 Perl 脚本,其中 shebang 行已过时。也就是说,shebang 指向 Perl 的旧版本。
每条路径旧:
#!/data/oracle10.0/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
新版本的 Perl 已发布
#!/data/**oracle11.0**/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
我已将 perl 命令软链接到新版本 perl 的位置。
perl -> /data/oracle11.0/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
现在,shebang 指向旧版本,perl 命令指向新版本。
所以,当我这样做时perl sample.pl,shebang 就会被忽略。
我编写了一些示例脚本来查看这一点。当我使用该命令时,shebang 行似乎被忽略了perl。但我记得旧版本的 perl 并非如此(Shebang 被认为是超过perl命令的)。
所以我的问题是,新版本的 perl(5.10)和旧版本(5.8)对于 shebang 行是否有不同的行为?如果将 perl 命令传递给新版本的 Perl,它会忽略 shebang 行吗?
#/bin/zsh
servers=('10.138.0.8' '10.138.0.91')
for srv in $servers; do
echo "Checking health for " $srv
echo "=========================================="
echo mntr | nc $srv 2181
done
Run Code Online (Sandbox Code Playgroud)
当我执行时,我没有循环第二个值10.138.0.91,如下所示
[devops@devops]~% ./healthcheck/zookeeper.sh
Checking health for 10.138.0.8
==========================================
zk_version 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 9
zk_packets_sent 8
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 28
zk_max_file_descriptor_count 4096
Run Code Online (Sandbox Code Playgroud)
为什么?
这可能是一个非常愚蠢的问题,但我目前有一个包含一些 HTML 内容的脚本。运行脚本后,我可以轻松创建 HTML 页面:
./scriptName.sh > test.html
Run Code Online (Sandbox Code Playgroud)
然而,我想要实现的是在脚本中创建 HTML 页面,并且在执行时不将其作为参数传递,也不由用户以任何方式指定。
换句话说,我希望脚本的运行方式如下:
./scriptName.sh
Run Code Online (Sandbox Code Playgroud)
在该脚本中,创建的 HTML 与执行时传递的 HTML 类似。
这可能吗?如果是这样,我将如何实现这一目标?
就其价值而言,我的脚本非常简单,如下所示:
#!/bin/bash
cat << _EOF_
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
_EOF_
Run Code Online (Sandbox Code Playgroud) 我无法找到任何有关此的信息,所以我不确定它完全可能。我目前正在尝试将 WebView2 控件集成到我的 PowerShell Winform GUI 中。我在调试脚本时可以看到 webView2 控件已创建,但没有加载任何内容。我安装了 WebView2 运行时。
这是我到目前为止所拥有的:
function Show-test-WebView2Control_psf {
#----------------------------------------------
#region Import the Assemblies
#----------------------------------------------
[void][reflection.assembly]::LoadFile('C:\Tests\Assemblies\Debug\Microsoft.Web.WebView2.WinForms.dll')
[void][reflection.assembly]::LoadFile('C:\Tests\Assemblies\Microsoft.Web.WebView2.Core.dll')
[void][reflection.assembly]::LoadFile('C:\Tests\Assemblies\Microsoft.Web.WebView2.Wpf.dll')
[void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
[void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
#endregion Import Assemblies
#----------------------------------------------
#region Generated Form Objects
#----------------------------------------------
[System.Windows.Forms.Application]::EnableVisualStyles()
$form1 = New-Object 'System.Windows.Forms.Form'
$buttonRefresh = New-Object 'System.Windows.Forms.Button'
$buttonGo = New-Object 'System.Windows.Forms.Button'
$textbox1 = New-Object 'System.Windows.Forms.TextBox'
[Microsoft.Web.WebView2.WinForms.WebView2] $webview = New-Object 'Microsoft.Web.WebView2.WinForms.WebView2'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Generated Form Objects
#----------------------------------------------
# User Generated Script
#----------------------------------------------
$form1_Load={
#TODO: Initialize …Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何在 Windows PowerShell 中使用计时器。我希望我的脚本运行命令/任务一段时间,停止任务,然后将结果输出到 txt 文件。这是我到目前为止所拥有的:
$timer = [Diagnostics.Stopwatch]::StartNew()
while ($timer.elapsed.totalseconds -lt 10){
netstat 169.254.219.44
$timer.stop() |
Out-File $PSScriptroot\connections.txt
break
}
Run Code Online (Sandbox Code Playgroud)
该脚本所做的就是在终端中运行命令,直到我按 ctrl+c。一旦我按 ctrl+c,它就会停止,然后输出 .txt 文件。但 .txt 文件是空白的。我花了比我应该花的时间更多的时间来试图解决这个问题。我是 Windows PowerShell 的新手,只是闲逛看看我能做什么。该脚本没有真正的目的。这简直让我发疯,我无法弄清楚这一点......
#!/bin/bash
read -p "enter search term here: " searchT
if [[ $(cat test.txt | grep -wi '$searchT') ]]; then
echo "$(cat test.txt | grep '$searchT' && wc -l) number of matches found"
echo $(cat test.txt | grep '$searchT')
else echo "no match found"
fi
exit 0
Run Code Online (Sandbox Code Playgroud)
如果if statement为真,我如何使脚本运行。当我运行脚本时,脚本将输出else语句。因为没有值可以与 grep 命令进行比较。
我有一种奇怪的感觉,我在这里做错了什么。
这是我的 PowerShell 脚本,当然是从这里窃取和改编的:
param(
$instance = "localhost"
)
if (!(Get-Module -ListAvailable -Name "SQLPS")) {
Write-Host -BackgroundColor Red -ForegroundColor White "Module Invoke-Sqlcmd is not loaded"
exit
}
#Function to execute queries (depending on if the user will be using specific credentials or not)
function Execute-Query([string]$query,[string]$database,[string]$instance,[int]$trusted,[string]$username,[string]$password){
if($trusted -eq 1){
try{
Invoke-Sqlcmd -Query $query -Database $database -ServerInstance $instance -ErrorAction Stop -ConnectionTimeout 5 -QueryTimeout 0
}
catch{
Write-Host -BackgroundColor Red -ForegroundColor White $_
exit
}
}
else{
try{
Invoke-Sqlcmd -Query $query …Run Code Online (Sandbox Code Playgroud) 我有一台主机,其主机名是 ,babuntu10而且hostname12我只想从fstab条目中删除主机名之一,但以下sed命令会同时删除它们:
sed -i '/'"$HOSTNAME:"'/,$d' /etc/fstab
Run Code Online (Sandbox Code Playgroud)
输入文件:
babuntu10:/root/products/babuntu10 /root/products/babuntu10 nfs soft,timeo=1,retrans=1 0 0
babuntu12:/root/products/babuntu12 /root/products/babuntu12 nfs soft,timeo=1,retrans=1 0 0
Run Code Online (Sandbox Code Playgroud)
我只需要删除带有主机名的条目。
我已经安装了 Scala(在一台气隙 Linux 机器上,来自 scala3-3.3.1.tar.gz)。
我尝试运行一个简单的 Scala 程序,无需sbt. 所以我写了一个文件hello.scala
object Hello {
def main(args: Array[String]) = {
println("Hello, World")
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用
scala hello.scala
Run Code Online (Sandbox Code Playgroud)
这有效。:-)
但我浏览了 Scala 3 网站,看到了许多没有整个“对象包装”的代码示例。所以我希望写一个更简单的文件script.scala
scala hello.scala
Run Code Online (Sandbox Code Playgroud)
并运行它scala。但这不起作用:Scala 返回错误“顶级定义的非法开始”。
我怎样才能运行这个?我需要一些命令行选项吗?或者我需要吗scala-cli?(我读到scala已经成为或将成为scala-cli。)
我很困惑。在气隙机器上运行简单 Scala 脚本的最佳方法是什么?