带参数开关的BASH功能

时间:2017-11-02 14:25:40

标签: bash function shell

我想创建一个BASH脚本,我可以输入一个参数来确定我将从vmstat获得什么样的输出。

我当前的脚本看起来像这样,但它太僵硬了:

#!/bin/bash

start_perfmon () {
    vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log
}

start_perfmon

应该这样工作:

./ start_perfmon.sh整体 - 运行:

vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log

./ start_perfmon.sh disk - runs:

vmstat -d -S M -n -w 3 >> HDD_RAW.log

./ start_perfmon.sh运行我现在的代码:

vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log

我已经在PowerShell中创建了一个模拟脚本:

(我相信能够帮助我的人,理解逻辑,而不是真正了解PowerShell。)

Function Start-Perfmon {
[CmdletBinding()]
Param (
    [Parameter(Position=0)]
    [switch]$Overall,
    [Parameter(Position=1)]
    [switch]$Disk
)

If ((!$Overall) -and (!$Disk)) {
    vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log & vmstat -d -S M -n -w 3 >> HDD_RAW.log
}
Else {
    If ($Overall) {
        vmstat -S M -n -w 3 >> $(date +"%Y%m%d-%H%M")_Overall.log
    }
    If ($Disk) {
        vmstat -d -S M -n -w 3 >> HDD_RAW.log
    }
}
}

0 个答案:

没有答案